CYBERSEC 2025最新大會議程快報
IT EXPLAINED 數位轉型攻略 VII
號召DevOps專家立即投稿
技術問答
技術文章
iT 徵才
Tag
聊天室
2024 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
第 12 屆 iThome 鐵人賽
DAY
6
0
自我挑戰組
30天|入門NestJs連載學習筆記
系列 第
6
篇
D06 CH8 | OCP 開放-封閉原則
12th鐵人賽
azsx96385
團隊
Outcome First
2020-09-19 16:40:58
994 瀏覽
分享至
1. 一個好的軟體架構,可以將修改的程式碼量,降到最低程度,理想狀況為0
目標-使系統易於擴展,而不會因修改而產生較大的影響
透過將系統劃分為元件,並將元件安排到依賴階層中而實現的,這類階層結構可以保護較高層級的元件,免受到低層級元件的變更所影響
2. 越上層的元件,擁有越核心的商業邏輯
離I/O越遠的元件層級越高,離I/O越近的層級越
越上層的元件,擁有越核心的商業邏輯
用櫃檯小姐的故事來說明(參考連結1)
想像一下你(user)今天走進一間公司(I/O),負責接待你的,請你填寫資料的是櫃檯小姐(低層級-處理實作),如果你是來談一筆大生意的,你會經過櫃檯,走到最裡面的落地窗辦公室,老闆正在那準備跟你討論(高層級-核心商業邏輯),我覺得這個說法滿容易想像和理解的,完整內容,請參考下方連結
3. 什麼是元件?
大 [系統層級← 元件層級←模組層級←類別層級←程式碼層級 ] 小
可單獨部署的單位,是系統在部屬的最小部分實體
讀這篇的時候,我一直把元件和模組搞混,後續Ch12有針對元件做一個好像有說,又沒什麼用的定義,一切都是需要感覺,總之我自己認定的是,兩者差異在是否可以被獨立部署,或是說獨立啟動而不需要依賴其他模組,舉例來說像是微服務,我接受是元件,可獨立部署,且包含一個以上的模組
4. 如果元件A應該被保護免於受到“元件B的改變”影響,那麼元件B應該依賴元件A,A←依賴←B,B中會 import A ,B知道A,但A不知道B
(B)低層級實作細節,應該依賴於(A)高層級商業邏輯
前台客服,替顧客服務的內容(實作細節),應該遵守老闆的的規定(商業邏輯)
在這個部分,看懂書中p61頁的圖會滿有幫助的,其中有兩個重點,大板塊的是元件,箭頭的指向則是依賴關係,觀察依賴關係的時候,可以特別著重誰依賴誰,因此如果有變動,受影像的是哪一方,我認為本篇對我的學習重點是
學習使用 import 和看箭頭方向區分依賴關係,謹慎規劃不同模組或是類別間的依賴關係
理解 為何依賴方向,可以保護被依賴者,不受影響,資訊隱藏的好處
參考
搞笑談軟工-Clean Architecture(4):架構三原則首部曲—分層原則
留言
追蹤
檢舉
上一篇
D05 CH7 | SRP 單一職責原則
下一篇
D07 CH9 | LSP 替換原則
系列文
30天|入門NestJs連載學習筆記
共
26
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
22
D22 台南的散步點心
23
D23 台南|國慶煙火在漁光
24
D24 無暇程式碼-CH20 商業邏輯
25
D25 Ch 22 整潔的架構
26
D25 ch 22 整潔的架構
完整目錄
直播研討會
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1064
組
團體組數
40
組
累計文章數
22211
篇
完賽人數
600
人
看影片追技術
看更多
揭秘LLMOps:讓LLM服務像火箭般穩定高效的祕密
Hello World Dev Conference
|
34 分
Observability 101:從零開始了解可觀測性
iThome鐵人賽
|
24 分
企業雲端Email及網頁服務守護者!以AI x API 為基礎阻絕APT攻擊【宏碁資訊網路學堂】
AEB大補帖
|
40 分
從0開始打造企業級元件及低代碼平台
Hello World Dev Conference
|
43 分
從 React Native 轉生到 Flutter
Hello World Dev Conference
|
24 分
應用新科技思維,引領企業轉型與賦能創新
Cloud Summit 臺灣雲端大會
|
31 分
資安「迷思」正在嚴重危害您的業務
IT EXPLAINED
|
50 分
從Node.js到Rust
MWC
|
35 分
台灣大哥大 車隊大管家 3.0 介紹及應用 & 車隊管理大數據節能秘技
IT EXPLAINED
|
31 分
資料上雲時代:企業該如何建構堅固的安全防線
Cloud Summit 臺灣雲端大會
|
28 分
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
vue.js
熱門問題
mail server 主機推薦
pulse secure 被併,有其他選擇嗎?
同網段下無法連線到印表機
ollama沒有使用GPU一問
台灣和美國二地,經過Firewall VPN通道,實際跑的速度 (2/17已解決)
win11電腦無法加入公司網域
CTF GAME
請問如何 移除 KB5051989 更新?造成一些bug
內部Windows DNS Server設定請教
安裝問題請問
GenAI 加速企業創新落地,更需要全新 IT 戰略
Windows 10支援倒數,聯繫微軟夥伴諮詢
DevOps專家看過來!投稿開放至2/27,立即行動分享技術實力!
CYBERSEC 2025專家傳授AI 、供應鏈、金融安全、零信任等資安關鍵應對策略
CYBERSEC YouTube 正式上線,回顧精選議程,探究資安議題!
熱門回答
mail server 主機推薦
安裝問題請問
同網段下無法連線到印表機
Redmine 如何簡單安裝在Win7作業系統上
ollama沒有使用GPU一問
熱門文章
類比工程師在幹嘛
調變與解調的基本概念(發射端 & 接收端)
請教台語語音模型 (STS, STT)
使用Python Notion API匯入新頁面
Hack The Box - ArcheType
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}